package models

import (
	"gameserver/tools/TestRobot/cmd"
	"gameserver/tools/TestRobot/internal"
	"time"
)

var (
	// mgr 机器人管理器单例
	mgr *RobotMgr
)

// init 初始化机器人管理器并启动主循环
func init() {
	mgr = newRobotMgr()
	internal.Thgo.Go(mgr.hander)
}

// GetRobotMgr 获取机器人管理器单例
func GetRobotMgr() *RobotMgr { return mgr }

// IUserLogic 用户逻辑接口，继承自cmd.ILogic
type IUserLogic interface {
	cmd.ILogic
	// Init 初始化逻辑
	Init(user *RobotUser)
	// Run 运行逻辑
	Run()

	/* 检查逻辑 */

	// IsEnd 是否结束
	IsEnd() bool
	// GetLogicType 获取逻辑类型
	GetLogicType() cmd.CmdTypeEnum
	// GetName 获取类型名字
	GetName() string

	/* 设置逻辑 */

	// SetTimer 设置当前步骤定时器，时间到了运行当前步骤的方法，不影响收消息
	SetTimer(d time.Duration)
}
